Ruby FAQ
RubyFAQ 新版(編集中)
旧リファレンス・マニュアルにあった「Ruby FAQ」がしばらくメンテナンスされていなかったので、構文や機能以外の、Rubyをとりまく一般的なFAQとして再構築中です。 Rubyとは何ですか
一言で言えば、 シンプルかつ強力なオブジェクト指向スクリプト言語 です。また、 たのしくプログラミングができる言語 でもあります。
以前は(当時の)Perlのようにテキスト処理の分野で使われることが多かったのですが、Ruby on Railsの普及以降、Webアプリケーションの開発によく使われる言語として知られるようになりました。とはいえ、それ以外の用途にも広く使われています。
Rubyにはたくさんの言語のよい部分が取り込まれており、その結果どの言語とも異なる言語になっています。さらに、Rubyが広く普及した結果、Rubyを参考にした新たな言語も生まれています。
Rubyは以下のような特長を持っています。
シンプルな文法
普通のオブジェクト指向機能(クラス、メソッドコールなど)
特殊なオブジェクト指向機能(Mix-in、特異メソッドなど)
演算子オーバーロード
例外処理機能
ブロック付きメソッド呼び出し(イテレータ)とクロージャ
ガーベージコレクタ
ダイナミックローディング(アーキテクチャによる)
移植性が高い。多くのUNIX、Windows、Mac OS X上で動く
名前の由来を教えてください
まつもとさんは、自分の新しい言語の名前をPerlのように何か宝石の名前からとろうとし、同僚の誕生石がRubyだったので、Rubyとしたそうです。
その後、誕生石としては、pearl => 6月、ruby => 7月、活字の大きさとしては、pearl => 5pt、ruby => 5.5ptなど、rubyが pearlの直後に来ている例があるのに気づき、Perlより新しく、できれば より良い言語の名前としてRubyが新しいスクリプト言語の名前として ふさわしいと思ったそうです。
まつもとさんは、RubyがPerlの代わりになる日を待っています(^^)。
Rubyの歴史を教えてください
Rubyは1993年2月24日に生まれました。その日同僚とオブジェクト指向 言語の可能性について話していました。Perl(Perl4で、Perl5ではありません。) は知っていましたが、おもちゃのにおいがして(今もありますが)好きになれませんでした。オブジェクト指向スクリプト言語は期待が持てました。
Pythonも知っていましたが、本当のオブジェクト指向言語とは思えません でした。オブジェクト指向がとってつけたもののように感じられたのです。 15年来言語マニアでオブジェクト指向のファンでしたので、真にオブジェクト指向のスクリプト言語が心底欲しかったのですが、そのようなものはさがしてもさがしてもありませんでした。
そこで自分で作ろうと決心したのです。数ヶ月たってインタプリタが動き始めました。イテレータ、例外処理、ガーベージコレクションなど欲しかったものをいれこみました。
さらにPerlの特徴をクラスライブラリとして取り込みました。 Ruby 0.95を日本国内のニューズグループに投稿したのは、1995年12月のことでした。
すぐにメーリングリストを始め、ホームページを作りました。メーリングリストでは活発な意見の交換がなされました。最初からあるruby-listは 今では14789通のメールを数えています。
Ruby 1.0 は1996年12月に、1.1 は1997年8月に、安定バージョンとしての 1.2 と開発バージョンの 1.3 が1998年12月にリリースされています。
どこで手に入りますか
Rubyはフリーソフトウェア、あるいはオープンソースソフトウェアであり、ソースコードが公開されています。
Rubyのソースコードを入手するには、Ruby公式サイトのダウンロードのページを参考にして下さい。 また、各OSや環境向けのバイナリパッケージも用意されています。
開発者向けの最新版のソースコードの取得については、レポジトリガイドを参考にしてください。 Rubyのホームページを教えてください
Rubyのメーリングリストはありますか
現在Rubyの話題を扱う公式のメーリングリストはいくつかあり、中でも比較的活発なものは以下の4つです。
メイリングリストの過去メールを調べたいのですが
Rubyistとは
「Rubyist」という言葉は造語で、Rubyに対して単なるお客さん以上の気持を持っている人がRubyistです。たとえば
Rubyを周りの人に宣伝する人
RubyのFAQを編簒する人
地域やネットワーク上でRubyのコミュニティを作ったり育てたりする人
Rubyの本を書く人
Rubyの作者に励ましのお便りを書く人
Rubyの作者 ^^;;;
Rubyistとは別に、Rubyに関して技術レベルの高さをあわらす人はRuby hackerと呼ぶ習慣もありましたが、最近はそのような区別はあまり聞かれないようです。
"Ruby"と"ruby"はどっちが正しいのですか
Rubyの正式な表記は"Ruby"です。ただし、コマンド名は"ruby"ですし、 また並列して違和感がない限り、Rubyの代わりにrubyを使うことは 許容されます。
ただし、「RUBY」、「ルビー」、「るびー」は言語名としては許容されていません。使わないことをおすすめします。
歴史的には"ruby"が正式名称だった時代があります。
Rubyの参考書を教えてください
独断と偏見も込めつつ、以下の書籍などが広く読まれているようです。
『たのしいRuby 第3版』(高橋征義・後藤裕蔵著、まつもと ゆきひろ監修、ソフトバンクパブリッシング)
『はじめてのRuby』(Yugui著、オライリー・ジャパン)
『プログラミング言語 Ruby』(まつもと ゆきひろ・David Flanagan著、卜部昌平監訳、長尾高弘訳)
『メタプログラミングRuby』(Paolo Perrotta著、角征典訳、アスキー・メディアワークス)
そのほか、Rails向けの書籍も多数出版されています。
マニュアルを読んでも理解できないところがあるのですが
Rubyは、基本的な構文はRuby 1.0以来大きくは変わっていませんが、絶えず拡張、修正が行われており、ドキュメントが最新バージョンに追いついていないこともあります。
分からなくなったら、遠慮なくruby-list MLで質問すると、作者のまつもとさんをはじめ、開発者の方々や私もはまったという人たちに分かりやすく教えていただけます。
質問をするには、ruby -vの結果と、はまったスクリプト (長い場合は本質的なところを切り出して)を示せばよいでしょう。
MLを検索すれば、かなりの疑問が解決するとは思いますが、メールも大量になってしまって、ありふれた検索では絞り込みにくくなっています。 最近のものくらいはチェックしておくのがネチケット(RFC1855の3.1.1、3.1.2参照) というものだとは思いますが、言うは易く、行うは難しですし、新しい視点も生まれるかもしれません。思い切って質問してみましょう。
Rubyの公式キャラクターは?
羊、ハチドリ、うさぎなど、多数のキャラクターが考えられましたが、今ひとつ定着しているものはないようです。
Rubyの公式ロゴは?
バグ報告はどこへ行えばよいでしょう?
もしバグに遭遇した場合には bugs.ruby-lang.org に報告してもらえれば、やがて何らかの応答があることでしょう。報告の仕方については、Ruby バグレポートガイドラインを一読してください。 また、(購読していれば) ruby-dev や ruby-core に報告することもできます。
その際は、rubyのバージョンやプラットフォーム、エラーメッセージ、 バグを再現できるスクリプトやデータなどもお願いします。
JIS Ruby、ISO Rubyとは何ですか?
Ruby の標準規格といったようなものは長らく存在していませんでしたが、2011年に JIS X 3017:2011「プログラム言語Ruby」が制定されました。この標準規格や、規定している言語を指してJIS Rubyと言っています。
また、同規格を国際化したものとして、2012年に ISO/IEC 30170:2012「Information technology -- Programming languages -- Ruby」が制定され、同様にISO Rubyと呼ばれています。
Rubyの資格試験はありますか?
Rubyを開発しているのは誰ですか?
CRuby、あるいはMRIと呼ばれているRubyの実装の開発について説明します。
開発上の決定事項に関する、最終的な決定権があるのはまつもとゆきひろさんです。Ruby界隈では特に肩書き的な呼称はありませんが、LinuxにおけるLinus TorvaldsさんやPythonの"BDFL" Guido Rossumさんと同じような感じです。
その他に、いわゆる「バザールモデル」で、バグ修正から、追加機能や性能向上のための提案などを寄せてくれている多くの人たちがいます。Redmineによるイシュートラッカ( http://bugs.ruby-lang.org/ )やメイリングリストにおける議論などを経て、CRubyに反映されます。たまたま自分が遭遇したバグを報告した、という人もいれば、継続的にコントリビュートしている人もいます。